package smartMarket.pessoa;

import banco.pessoa.BancoFuncionario;
import excecoes.estoque.DinheiroNegativoException;
import excecoes.pessoa.CpfCnpjExistenteException;
import excecoes.pessoa.CpfCnpjInvalidoException;
import excecoes.pessoa.LocalizacaoInvalidaException;
import excecoes.pessoa.NomeFantasiaNuloException;
import excecoes.pessoa.NomeInvalidoException;
import java.sql.SQLException;
import smartMarket.pessoa.Pessoa;

public class Funcionario extends Pessoa {

    //atributos
    private boolean permissao;
    private float salario;
    private String senha;
    private String cargo;

    //Gets e Sets
    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public boolean isPermissao() {
        return permissao;
    }

    public String getSenha() {
        return senha;
    }

    public void setPermissao(boolean permissao) {
        this.permissao = permissao;
    }

    public float getSalario() {
        return salario;
    }

    public void setSalario(float salario) {
        this.salario = salario;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    //Método
    public boolean autenticar(String senha) {
        if (permissao) {
            if (this.senha.equals(senha)) {
                return true;
            }
            return false;
        }
        return false;
    }

    @Override
    public void setCPF_CNPJ(String CPF) throws CpfCnpjInvalidoException, SQLException, NullPointerException, NomeInvalidoException, DinheiroNegativoException, CpfCnpjExistenteException, LocalizacaoInvalidaException {
        
        this.CPF_CNPJ = CPF;
        
    }
    
    @Override
    public void setCPF_CNPJ(String CPF, boolean adicionamento) throws CpfCnpjInvalidoException, SQLException, NullPointerException, NomeInvalidoException, DinheiroNegativoException, CpfCnpjExistenteException, LocalizacaoInvalidaException {
        
        if (CPF.equals("   .   .   -  ")) {
            throw new CpfCnpjInvalidoException();
        } else { 
            BancoFuncionario bf = new BancoFuncionario();
            if (bf.buscar(CPF)!=null) {
                throw new CpfCnpjExistenteException();
            }
        }
        
        this.CPF_CNPJ = CPF;
        
    }
}